/******************************
 * 公司：......
 * 作者：shelman
 * 日期：2022年10月12日
 * 版本：V1.0
 * 摘要：使用模块方式实现环形队列缓存区。
 * ****************************/

#pragma once

//#ifdef _WIN32
//#   define EXPORT_LIB_API __declspec(dllexport)
//#else
//#   define EXPORT_LIB_API __attribute__((visibility("default")))
//#endif

#include <stddef.h>

template<typename T>
class RingQueue
{
public:
    RingQueue();
    RingQueue(size_t iSize);
    virtual ~RingQueue();

    // 常用接口
    bool isEmpty();
    bool isFull();
    void pushBack(const T& data);
    T popFront();
    size_t size() const;
    void resize(size_t iSize);
    size_t capacity() const;

private:
    size_t m_iCapacity;
    size_t m_iFront;
    size_t m_iRear;
    T* m_pData;
};


#define QING_QUEUE_SRC
#include "RingQueue.cpp"

